API: Add state flags for RTL and LTR
authorBenjamin Otte <otte@redhat.com>
Tue, 18 Dec 2012 15:42:04 +0000 (16:42 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 18 Dec 2012 17:25:41 +0000 (18:25 +0100)
See http://www.whatwg.org/specs/web-apps/current-work/#pseudo-classes
for the rationale.

gtk/gtkenums.h
gtk/gtkwidget.c

index 6a339637d08833838d32d690506af69e8c948ca4..daff2f0ddffe124ede50a7329d264ae26971748c 100644 (file)
@@ -860,8 +860,12 @@ typedef enum
  * @GTK_STATE_FLAG_INCONSISTENT: Widget is inconsistent.
  * @GTK_STATE_FLAG_FOCUSED: Widget has the keyboard focus.
  * @GTK_STATE_FLAG_BACKDROP: Widget is in a background toplevel window.
+ * @GTK_STATE_FLAG_LTR: Widget is in left-to-right text direction
+ * @GTK_STATE_FLAG_RTL: Widget is in right-to-left text direction
  *
- * Describes a widget state.
+ * Describes a widget state. Widget states are used to match the widget
+ * against CSS pseudo-classes. Note that GTK extends the regular CSS
+ * classes and sometimes uses different names.
  */
 typedef enum
 {
@@ -872,7 +876,9 @@ typedef enum
   GTK_STATE_FLAG_INSENSITIVE  = 1 << 3,
   GTK_STATE_FLAG_INCONSISTENT = 1 << 4,
   GTK_STATE_FLAG_FOCUSED      = 1 << 5,
-  GTK_STATE_FLAG_BACKDROP     = 1 << 6
+  GTK_STATE_FLAG_BACKDROP     = 1 << 6,
+  GTK_STATE_FLAG_DIR_LTR      = 1 << 7,
+  GTK_STATE_FLAG_DIR_RTL      = 1 << 8
 } GtkStateFlags;
 
 /**
index a82e62be0bcf8ff3be0b8344317dec9c17fba706..13f7b7953dc0f3fe1a44f18a975beecb4e82949f 100644 (file)
  * all flags will be set on children (think prelight or active), but we
  * might want to not do this for some.
  */
-#define GTK_STATE_FLAGS_DONT_PROPAGATE (GTK_STATE_FLAG_FOCUSED)
+#define GTK_STATE_FLAGS_DONT_PROPAGATE (GTK_STATE_FLAG_FOCUSED | GTK_STATE_FLAG_DIR_LTR | GTK_STATE_FLAG_DIR_RTL)
 #define GTK_STATE_FLAGS_DO_PROPAGATE (~GTK_STATE_FLAGS_DONT_PROPAGATE)
 
 #define WIDGET_CLASS(w)         GTK_WIDGET_GET_CLASS (w)
 
-#define GTK_STATE_FLAGS_BITS 7
+#define GTK_STATE_FLAGS_BITS 9
 
 struct _GtkWidgetPrivate
 {